#include <algorithm>
#include <iostream>
#include <utility>
#include <vector>

// #include "boost/phoenix.hpp"

void process(int& x) { std::cout << "lvalue\n"; }
void process(int&& x) { std::cout << "rvalue\n"; }

template <typename T>
void wrapper(T&& x)
{
    process(std::forward<T>(x)); // 保持 x 的原始值类别
}

int main()
{
    // int a = 1;
    // wrapper(a); // 输出 lvalue
    // wrapper(2); // 输出 rvalue

    std::vector<int> numbers { 21, 5, 62, 42, 53 };
    // std::partition(numbers.begin(), numbers.end(), boost::phoenix::arg_names::arg1 <= 42);
}
